home *** CD-ROM | disk | FTP | other *** search
Oberon Text | 1996-01-29 | 2.9 KB | 76 lines | [TEXT/.Ob4] |
- Syntax10.Scn.Fnt
- StampElems
- Alloc
- 29 Jan 96
- MODULE DummyPrinter; (* mah, jt
- IMPORT
- Macintosh, Sys, Printer, Directories, SYSTEM;
- dpi: LONGINT; printHnd: Sys.TPrHnd; printPort: Sys.GrafPtr;
- PROCEDURE GetDPI;
- TYPE
- XY=RECORD x, y: INTEGER END;
- GetRsl=RECORD op, err: INTEGER; misc: ARRAY 7 OF INTEGER; cnt: INTEGER; res: ARRAY 27 OF XY END;
- SetRsl=RECORD op, err: INTEGER; dum: LONGINT; hPrint: Sys.TPrHnd; x, y: INTEGER END;
- VAR
- res: XY; getRsl: GetRsl; setRsl: SetRsl; i: INTEGER;
- BEGIN dpi:=0; getRsl.op:=4; Sys.PrGeneral(SYSTEM.ADR(getRsl));
- IF (getRsl.err=0)&(Sys.PrError()=0) THEN i:=0;
- WHILE i < getRsl.cnt DO res:=getRsl.res[i];
- IF (res.x=res.y)&(res.x > dpi) THEN dpi:=res.y END;
- INC(i)
- END;
- setRsl.hPrint:=printHnd; setRsl.x:=SHORT(dpi); setRsl.y:=SHORT(dpi); setRsl.op:=5; Sys.PrGeneral(SYSTEM.ADR(setRsl));
- IF (setRsl.err#0)OR(Sys.PrError()#0) THEN dpi:=0 END
- END
- END GetDPI;
- PROCEDURE * Open(VAR name, user: ARRAY OF CHAR; password: LONGINT);
- VAR ph: Sys.TPrRealHnd; pp: Sys.TPrRealPtr; d: Directories.Directory;
- BEGIN Printer.res:=1;
- d := Directories.Current();
- Sys.PrOpen;
- IF Sys.PrError()=0 THEN Sys.PrintDefault(printHnd); GetDPI;
- IF dpi#0 THEN
- IF Sys.PrError()=0 THEN Printer.res:=0;
- ph:=SYSTEM.VAL (Sys.TPrRealHnd, printHnd);
- pp:=SYSTEM.VAL (Sys.TPrRealPtr, ph.p);
- Printer.PageWidth:=SHORT(LONG(pp.right)*300 DIV dpi);
- Printer.PageHeight:=SHORT(LONG(pp.bottom)*300 DIV dpi)
- ELSE Sys.PrCloseDoc(printPort); Sys.PrClose END
- ELSE Sys.PrClose END
- ELSE Sys.PrClose END;
- Directories.Change(d.path)
- END Open;
- PROCEDURE * Page(nofcopies: INTEGER);
- END Page;
- PROCEDURE * Close;
- END Close;
- PROCEDURE * UseListFont(VAR name: ARRAY OF CHAR);
- END UseListFont;
- PROCEDURE * ReplConst(x, y, w, h: INTEGER);
- END ReplConst;
- PROCEDURE * ContString(VAR s, fname: ARRAY OF CHAR);
- END ContString;
- PROCEDURE * String(x, y: INTEGER; VAR s, fname: ARRAY OF CHAR);
- END String;
- PROCEDURE * ReplPattern(x, y, w, h, col: INTEGER);
- END ReplPattern;
- PROCEDURE * Picture(x, y, w, h, mode: INTEGER; adr: LONGINT);
- END Picture;
- PROCEDURE * Circle(x0, y0, r: INTEGER);
- END Circle;
- PROCEDURE * Ellipse(x0, y0, a, b: INTEGER);
- END Ellipse;
- PROCEDURE * Line(x0, y0, x1, y1: INTEGER);
- END Line;
- PROCEDURE * Spline(x0, y0, n, open: INTEGER; VAR X, Y: ARRAY OF INTEGER);
- END Spline;
- PROCEDURE Install*;
- BEGIN
- Macintosh.prOpen:=Open; Macintosh.prClose:=Close; Macintosh.prPage:=Page;
- Macintosh.prCircle:=Circle; Macintosh.prEllipse:=Ellipse; Macintosh.prLine:=Line; Macintosh.prSpline:=Spline;
- Macintosh.prPicture:=Picture; Macintosh.prReplConst:=ReplConst; Macintosh.prReplPattern:=ReplPattern;
- Macintosh.prString:=String; Macintosh.prContString:=ContString; Macintosh.prUseListFont:=UseListFont
- END Install;
- BEGIN printHnd:=Sys.NewHandle (120)
- END DummyPrinter.
-